11.構造体

11-10. エンドレスチェーン

◇エンドレスチェーン

 それでは、ここでエンドレスチェーンを作ってみましょう。
エンドレスチェーンとは始まりと終りのないチェーンで具体的には自転車のチェーンがそれに当たります。
 因みにバイク屋でチェーン交換の時エンドレスチェーンを指定すると、結構、迷惑かもしれません。(タイヤはずさないと取り付けられないから)

さっきのプログラムのs5には次の構造体が示されていませんでした。
つまり、ここにs1のアドレスを指定すれば、s5とs1が繋がって見事に、エンドレスチェーンができあがります。(片道通行ではありますが・・・)

 1: #include<stdio.h>
 2: 
 3: typedef struct data_chain{
 4:     int     number;
 5:     char *p_string;
 6:     struct data_chain *p_st;
 7: }DataChain;
 8: 
 9: main()
10: {
11:     DataChain s1={1,"NameA",NULL};
12:     DataChain s2={2,"NameB",NULL};
13:     DataChain s3={3,"NameC",NULL};
14:     DataChain s4={4,"NameD",NULL};
15:     DataChain s5={5,"NameE",NULL};
16:     DataChain *p_data;
17: 
18:     s1.p_st = &s2;
19:     s2.p_st = &s3;
20:     s3.p_st = &s4;
21:     s4.p_st = &s5;
22:     s5.p_st = &s1;
23:
24:     for(p_data = &s1; p_data != NULL; p_data = p_data->p_st)
25:             printf("%2d %s\n",p_data->number, p_data->p_string);
26:             return;
27: }

とりあえず、エンドレスチェーンはできましたが無限ループなので実行したら [Ctrl]+[C] でプログラムを止めてください。